/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controller;

import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JInternalFrame;
import javax.swing.filechooser.FileNameExtensionFilter;
import model.ModelMain;
import model.ModelPALC;
import model.ModelRecibirENVT;
import model.ModelRecibirOFAD;
import model.ModelVentaArticulo;
import tiendagui.TiendaGUIView;
import tiendagui.internal.JInternalFrameEnvT;
import tiendagui.internal.JInternalFrameGenerarPALC;
import tiendagui.internal.JInternalFrameImpl;
import tiendagui.internal.JInternalFrameRecibirOFAD;
import tiendagui.internal.factura.JInternalFrameFactura;

/**
 *
 * @author Jhonny
 */
public class ControllerMain {
    private ModelMain                   model;
    private TiendaGUIView               dialogMain;
    private JInternalFrameFactura       ventaArticulos;
    private JInternalFrameRecibirOFAD   recibirOFAD;
    private JInternalFrameEnvT          recibirENVT;
    private JInternalFrameGenerarPALC   generarPALC;
    public ControllerMain(ModelMain model, TiendaGUIView dialog) {
        this.model = model;
        this.dialogMain = dialog;
    }

    public void ventaArticulos() {
        if(ventaArticulos==null){
            ModelVentaArticulo modelVentaArticulo  = new ModelVentaArticulo(model);
            ventaArticulos = new JInternalFrameFactura(modelVentaArticulo);
        }
        setVisibleInternalFrame(ventaArticulos);
    }

    public void recibirOFAD() {
        if(recibirOFAD==null){
            ModelRecibirOFAD modelOFAD  = new ModelRecibirOFAD(model);
            recibirOFAD = new JInternalFrameRecibirOFAD(modelOFAD);
        }
        loadXMLFile(recibirOFAD);
    }

    public void enviarPALC() {
        if(generarPALC==null){
            ModelPALC modelPalc  = new ModelPALC(model);
            generarPALC = new JInternalFrameGenerarPALC(modelPalc);
        }
        setVisibleInternalFrame(generarPALC);
    }

    public void recibirENVT() {
        if(recibirENVT==null){
            ModelRecibirENVT modelEnvt  = new ModelRecibirENVT(model);
            recibirENVT = new JInternalFrameEnvT(modelEnvt);
        }
        loadXMLFile(recibirENVT);
    }




    
    private void loadXMLFile(JInternalFrameImpl internalFrame){
        String path = getDirPath();
        if(!path.equals("")){
            internalFrame.setPathFile(path);
            setVisibleInternalFrame(internalFrame);
        }
    }
    private String getDirPath(){
        String path = "";
        JFileChooser fileChooser = new JFileChooser();
        FileNameExtensionFilter filter = new FileNameExtensionFilter("XML","xml");
        fileChooser.setFileFilter(filter);
        fileChooser.setAcceptAllFileFilterUsed(false);
        fileChooser.setCurrentDirectory(new File("xml/"));
        int seleccion = fileChooser.showOpenDialog(dialogMain.getFrame());

        if (seleccion == JFileChooser.APPROVE_OPTION){
           File fichero = fileChooser.getSelectedFile();
           path = fichero.getAbsolutePath();
        }

        return path;
    }

    private void setVisibleInternalFrame(JInternalFrame internalFrame) {
        if(!desktopPanecontains(internalFrame)){
            internalFrame.setVisible(true);
            dialogMain.getDesktopPane().add(internalFrame);            
        }
        dialogMain.getDesktopPane().selectFrame(true);
        dialogMain.getDesktopPane().setSelectedFrame(internalFrame);        
    }

    private boolean desktopPanecontains(JInternalFrame internalFrame) {
        boolean encontrado=false;
        for (JInternalFrame element : dialogMain.getDesktopPane().getAllFrames()) {
            if(element.equals(internalFrame)){
                encontrado = true;
                break;
            }
        }
        return encontrado;
    }
}
